package cn.tedu.opp;

/**
 * @author: Dsi
 * @date: 2021/11/10 14:41
 * @description:该类用于抽象类的入门案例
 */
public class AbstractDemo {
    public static void main(String[] args) {
        /*4.抽象类不可以创建对象*/
        //Animal a1=new Animal();//不可创建对象
       Animal a=new Pig();//通过多态创建
       a.eat();//父类普通的方法
       a.fly();//子类实现了的父类的抽象方法
    }
}
/*2.被abstract修饰的类是一个抽象类，包含抽象方法的类必须声明成抽象类*/
abstract class Animal{
    public void eat(){
        System.out.println("父类eat");
    }
    public void play(){
        System.out.println("父类play");
    }
    /*1.被abstract修饰的方法称为抽象方法，没有方法体*/
    public abstract void fly();
    public abstract void fly1();
}
/*3.当一个子类继承了抽象父类后，两种解决办法
方案一:变成抽象类
方案二：变成普通类，并将最初的抽象方法具体化
 */
//abstract class  Pig extends Animal{
class Pig extends Animal{

    @Override
    public void fly() {
        System.out.println("抽象父类的抽象方法，子类完成了");
    }

    @Override
    public void fly1() {
        System.out.println("抽象父类的所有抽象方法都需要被实现");
    }
}